\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}


\newcommand{\reservedWord}[1]{\textbf{#1} }
\newcommand{\regularDefinition}[1]{\emph{#1} }
\newcommand{\arrow}[0]{$\rightarrow$ }
\newcommand{\sugar}[1]{\textbf{#1} }
\newcommand{\eps}{$\epsilon$}
\newcommand{\pipe}{\textpipe\ }
\newcommand{\constant}[1]{\underline{\textbf{#1}} }

%**************** REGULAR DEFINITIONS *********************
\newcommand{\program}{\regularDefinition{program}}
\newcommand{\labelFile}{\regularDefinition{group-label-file}}
\newcommand{\classFile}{\regularDefinition{class-file}}
\newcommand{\requireClause}{\regularDefinition{require-clause}}
\newcommand{\requireList}{\regularDefinition{require-list}}
\newcommand{\requireElement}{\regularDefinition{require-element}}
\newcommand{\classDefinition}{\regularDefinition{class-definition}}
\newcommand{\additionalClauseList}{\regularDefinition{additional-clause-list}}
\newcommand{\additionClause}{\regularDefinition{additional-clause}}
\newcommand{\extendsClause}{\regularDefinition{extends-clause}}
\newcommand{\idList}{\regularDefinition{id-list}}
\newcommand{\modepolicies}{\regularDefinition{mode-policies-clause}}
\newcommand{\readpolicies}{\regularDefinition{read-policies}}
\newcommand{\writepolicies}{\regularDefinition{write-policies}}
\newcommand{\accessgroup}{\regularDefinition{access-group}}
\newcommand{\groupMemberClause}{\regularDefinition{group-member-clause}}
\newcommand{\fieldDeclarationSector}{\regularDefinition{field-declaration-sector}}
\newcommand{\fieldList}{\regularDefinition{field-list}}
\newcommand{\fieldElement}{\regularDefinition{field-element}}
\newcommand{\fieldModifier}{\regularDefinition{field-modifier}}
\newcommand{\methodDeclarationSector}{\regularDefinition{method-declaration-sector}}
\newcommand{\methodModifier}{\regularDefinition{method-modifier}}
\newcommand{\passMode}{\regularDefinition{pass-mode}}
\newcommand{\type}{\regularDefinition{type}}
\newcommand{\simpletype}{\regularDefinition{simple-type}}
\newcommand{\classtype}{\regularDefinition{class-type}}
\newcommand{\typeModifier}{\regularDefinition{type-modifier}}
\newcommand{\typeValue}{\regularDefinition{type-value}}
\newcommand{\methodList}{\regularDefinition{method-list}}
\newcommand{\methodElement}{\regularDefinition{method}}
\newcommand{\methodPrototype}{\regularDefinition{method-prototype}}
\newcommand{\returnType}{\regularDefinition{return-type}}
\newcommand{\methodBody}{\regularDefinition{method-body}}
\newcommand{\formalParamDeclList}{\regularDefinition{formal-param-declaration-list}}
\newcommand{\paramDecl}{\regularDefinition{param-declaration}}
\newcommand{\methodType}{\regularDefinition{method-type}}
\newcommand{\statlist}{\regularDefinition{stat-list}}
\newcommand{\stat}{\regularDefinition{stat}}
\newcommand{\localVarDefinition}{\regularDefinition{local-variable-definition}}
\newcommand{\assignStat}{\regularDefinition{assign-stat}}
\newcommand{\expr}{\regularDefinition{expr}}
\newcommand{\compareExpr}{\regularDefinition{compare-expr}}
\newcommand{\logicExpr}{\regularDefinition{logic-expr}}
\newcommand{\mathTopExpr}{\regularDefinition{math-expr-1}}
\newcommand{\mathBottomExpr}{\regularDefinition{math-expr-2}}
\newcommand{\termExpr}{\regularDefinition{term-expr}}
\newcommand{\compareOperator}{\regularDefinition{compare-operator}}
\newcommand{\logicOperator}{\regularDefinition{logic-operator}}
\newcommand{\mathTopOperator}{\regularDefinition{math-operator-1}}
\newcommand{\mathBottomOperator}{\regularDefinition{math-operator-2}}
\newcommand{\constantCustom}{\regularDefinition{constant}}
\newcommand{\newInstance}{\regularDefinition{new-instance}}
\newcommand{\bracesList}{\regularDefinition{braces-list}}
\newcommand{\bracesElement}{\regularDefinition{braces-element}}
\newcommand{\instanceMode}{\regularDefinition{instance-mode}}
\newcommand{\whileStat}{\regularDefinition{while-stat}}
\newcommand{\forStat}{\regularDefinition{for-stat}}
\newcommand{\ifStat}{\regularDefinition{if-stat}}
\newcommand{\breakStat}{\regularDefinition{break-stat}}
\newcommand{\continueStat}{\regularDefinition{continue-stat}}
\newcommand{\returnStat}{\regularDefinition{return-stat}}
\newcommand{\procedureCallStat}{\regularDefinition{procedure-call}}
\newcommand{\actualParamList}{\regularDefinition{actual-param-list}}
\newcommand{\paramList}{\regularDefinition{param-list}}
\newcommand{\leftvar}{\regularDefinition{left-var}}
\newcommand{\fieldVar}{\regularDefinition{field-var}}
\newcommand{\arrayVar}{\regularDefinition{array-var}}
\newcommand{\doWhileStat}{\regularDefinition{do-while-stat}}
\newcommand{\elseifStatList}{\regularDefinition{elsif-stat-list}}
\newcommand{\elsifStat}{\regularDefinition{elsif-stat}}
\newcommand{\elseStat}{\regularDefinition{else-stat}}
\newcommand{\switchStat}{\regularDefinition{switch-stat}}
\newcommand{\switchList}{\regularDefinition{switch-list}}
\newcommand{\caseClauseList}{\regularDefinition{case-clause-list}}
\newcommand{\caseClause}{\regularDefinition{case-clause}}
\newcommand{\defaultClause}{\regularDefinition{default-clause}}
\newcommand{\arraytype}{\regularDefinition{array-type}}
\newcommand{\labelModifier}{\regularDefinition{label-modifier}}
\newcommand{\labelsDefinitionList}{\regularDefinition{group-labels-definition-list}}
\newcommand{\labelsDefinition}{\regularDefinition{group-labels-definition}}
\newcommand{\accessElement}{\regularDefinition{access-element}}
\newcommand{\classID}{\regularDefinition{class-id}}
\newcommand{\classModifierList}{\regularDefinition{class-modifier-list}}
\newcommand{\classModifierElement}{\regularDefinition{class-modifier-element}}


%****************** RESERVED WORDS *********************

\newcommand{\class}[0]{\reservedWord{class}}
\newcommand{\id}{\reservedWord{id}}
\newcommand{\this}{\reservedWord{this}}
\newcommand{\require}{\reservedWord{require}}
\newcommand{\extends}{\reservedWord{extends}}
\newcommand{\readable}{\reservedWord{readable}}
\newcommand{\by}{\reservedWord{by}}
\newcommand{\writeable}{\reservedWord{writeable}}
\newcommand{\all}{\reservedWord{all}}
\newcommand{\onlyme}{\reservedWord{onlyme}}
\newcommand{\children}{\reservedWord{children}}
\newcommand{\member}{\reservedWord{member}}
\newcommand{\of}{\reservedWord{of}}
\newcommand{\static}{\reservedWord{static}}
\newcommand{\const}{\reservedWord{const}}
\newcommand{\intCustom}{\reservedWord{int}}
\newcommand{\stringCustom}{\reservedWord{string}}
\newcommand{\bool}{\reservedWord{bool}}
\newcommand{\charCustom}{\reservedWord{char}}
\newcommand{\reference}{\reservedWord{reference}}
\newcommand{\valueCustom}{\reservedWord{value}}
\newcommand{\procedure}{\reservedWord{procedure}}
\newcommand{\function}{\reservedWord{function}}
\newcommand{\while}{\reservedWord{while}}
\newcommand{\doCustom}{\reservedWord{do}}
\newcommand{\for}{\reservedWord{for}}
\newcommand{\toCustom}{\reservedWord{to}}
\newcommand{\ifCustom}{\reservedWord{if}}
\newcommand{\then}{\reservedWord{then}}
\newcommand{\elseCustom}{\reservedWord{else}}
\newcommand{\elsif}{\reservedWord{elsif}}
\newcommand{\continue}{\reservedWord{continue}}
\newcommand{\breakCustom}{\reservedWord{break}}
\newcommand{\return}{\reservedWord{return}}
\newcommand{\real}{\reservedWord{real}}
\newcommand{\copyCustom}{\reservedWord{copy}}
\newcommand{\void}{\reservedWord{void}}
\newcommand{\switch}{\reservedWord{switch}}
\newcommand{\case}{\reservedWord{case}}
\newcommand{\default}{\reservedWord{default}}
\newcommand{\public}{\reservedWord{public}}
\newcommand{\package}{\reservedWord{package}}
\newcommand{\new}{\reservedWord{new}}
\newcommand{\staticCustom}{\reservedWord{static}}
\newcommand{\abstractCustom}{\reservedWord{abstract}}

%************** CONSTANT **************************

\newcommand{\numconst}{\constant{num-const}}
\newcommand{\stringConst}{\constant{string-const}}
\newcommand{\boolConst}{\constant{bool-const}}
\newcommand{\charConst}{\constant{char-const}}

%******************* SUGAR ************************
\newcommand{\comma}{\sugar{,}}
\newcommand{\semicolon}{\sugar{;}}
\newcommand{\colonCustom}{\sugar{:}}
\newcommand{\opengraph}{\sugar{\{}}
\newcommand{\closegraph}{\sugar{\}}}
\newcommand{\openbrake}{\sugar{[}}
\newcommand{\closebrake}{\sugar{]}}
\newcommand{\openParenthesis}{\sugar{(}}
\newcommand{\closeParenthesis}{\sugar{)}}
\newcommand{\assignment}{\sugar{=}}
\newcommand{\point}{\sugar{.}}

\newcommand{\gtCustom}{\sugar{$>$}}
\newcommand{\ltCustom}{\sugar{$<$}}
\newcommand{\geqCustom}{\sugar{$>=$}}
\newcommand{\leqCustom}{\sugar{$<=$}}
\newcommand{\eqCustom}{\sugar{==}}
\newcommand{\neCustom}{\sugar{!=}}
\newcommand{\plus}{\sugar{+}}
\newcommand{\minus}{\sugar{-}}
\newcommand{\timesCustom}{\sugar{*}}
\newcommand{\divideCustom}{\sugar{/}}
\newcommand{\remainder}{\sugar{\%}}
\newcommand{\andCustom}{\sugar{\&\&}}
\newcommand{\orCustom}{\sugar{{\textpipe}{\textpipe}}}

